﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using DAL;
using BOL;
using Website.Logger;
using UtilityExtensions;


namespace UILGestion.Admin.Proveedor
{
    public partial class ProveedorReadForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    internalid.Value = (string)Request.QueryString["id"];
                    menuCtrl1.loadMenuAdmin();
                    FormatForm();
                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }

        private void editObject()
        {
            dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
            DAL.Proveedor proveedor = _db.Proveedors.Single(p => p.idInternal == int.Parse(internalid.Value));

            
            descripcionTextBox.Text = proveedor.descripcion;
            formaPagoDDL.Text = proveedor.FormaPago.descripcion.ToString();
            emailTextBox.Text = proveedor.email;
            webTextBox.Text = proveedor.web;
            rucTextBox.Text = proveedor.ruc;

            //---------------
            contactoTextBox.Text = proveedor.contacto;

            var f = DbUtil.Db.TipoDocumentos.SingleOrDefault(p=>p.idInternal==proveedor.tipoDocContacto.ToInt());
            tipoDocumentocontactoDDL.Text = (f != null ? f.abreviacion : "");
            documentoContactoTextBox.Text = proveedor.docContacto;
            emailContactoTextBox.Text = proveedor.emailContacto;
                             //--------------------
            direccionOficinaTextBox.Text = proveedor.direccionOficina;
            telefonoOficina1TextBox.Text = proveedor.telefonoOficina1;
            telefonoOficina2TextBox1.Text = proveedor.telefonoOficina2;
            distritoOficinaTextBox.Text = proveedor.distritoOficina;
            anexoOficinaTextBox.Text = proveedor.anexoOficina;
            faxOficinaTextBox.Text = proveedor.faxOficina;

            direciconDespTextBox.Text = proveedor.direccionDesp;
            telefono1DespTextBox.Text = proveedor.telefonoDesp1;
            telefono2DespTextBox.Text = proveedor.telefonoDesp2;
            distritoTextBox.Text = proveedor.distritoDesp;
            anexoDespTextBox.Text = proveedor.anexoDesp;
            faxTextBox.Text = proveedor.faxDesp;
            Nombre1TXT.Text = proveedor.nombre;

            estadoDDL.Text = proveedor.estado == 'V' ? "V - VIGENTE" : (proveedor.estado == 'B' ? "B - BLOQUEADO" : "A - ANULADO");
            tipoProveedorDDL.Text = proveedor.tipo =='N' ? "N - NATURAL" : "J - JURIDICA";

            tipoDocumentoDDL.Text = proveedor.TipoDocumento1.abreviacion.ToString();
            apellidoMatTXT.Text = proveedor.apellidoMat;
            apellidoPatTXT.Text = proveedor.apellidoPat;

            swithtipoProveedor(proveedor.tipo.ToString());
            abreviacionTXT.Text = proveedor.abreviacion.ToString();

            //DATOS PROVEEDOR
            clasificacionDDL.SelectedValue = proveedor.clasificacion;
            tipoAcreedorDDL.SelectedValue = proveedor.tipoAcreedor;
            formaPagoGPDDL.SelectedValue = proveedor.formaPagoG;
            detraccionDDL.SelectedValue = proveedor.detraccion;
            ImporteRendirTXT.Text = proveedor.importeRendir.ToString();
            monedaDDL.SelectedValue = proveedor.importeMoneda;
            giroNegocioDDL.SelectedValue = proveedor.giroNegocio;
            areaContactoDDL.SelectedValue = proveedor.areaContactoPago;

            contactoPago.Text = proveedor.contactoPago;
            retencionDDL.SelectedValue = proveedor.retencion;

            var proveedorCuenta = DbUtil.Db.ProveedorCuentas.SingleOrDefault(p => p.idProveedor == proveedor.idInternal);

            if (proveedorCuenta != null)
            {

                teleCuentaMNTXX.Text = proveedorCuenta.teleCuentaSOL;
                teleCuentaUSTXT.Text = proveedorCuenta.teleCuentaDOL;
                teleCuentaInterBanTXT.Text = proveedorCuenta.teleInterBan;
                teleTipoProductoDDL.SelectedValue = proveedorCuenta.teleTipoProducto.ToString();
                teleTipoDocDDL.SelectedValue = proveedorCuenta.teleTipoDoc.ToString();
                teleNroDocTXT.Text = proveedorCuenta.teleDocumento;
                interbankCuentaMNTXT.Text = proveedorCuenta.IntcuentaSOL;
                interbankCuentaUSTXT.Text = proveedorCuenta.intcuentaDOL;
                InterbankCuentaInterBankTXT.Text = proveedorCuenta.intInterBan;
                InterbankOficinaTXT.Text = proveedorCuenta.intOficina;
                InterbanktipoProductoDDL.SelectedValue = proveedorCuenta.intTipoProducto;
                interbankTipoBonoDDL.SelectedValue = proveedorCuenta.intTipoBono;
                InterbanktipoDocDDL.SelectedValue = proveedorCuenta.intTipoDocumento;
                interbankNroDocTXT.Text = proveedorCuenta.intNroDocumento;

                continentalCuentaMNTXT.Text = proveedorCuenta.continentCuentaSOL;
                continentalcuentaUSTXT.Text = proveedorCuenta.continentCuentaDOL;
                continentalCuentaInterBanTXT.Text = proveedorCuenta.continentInterBan;
                ContinentalformaPagoDDL.SelectedValue = proveedorCuenta.continentFormaPago.ToString();
                continentalTipoCuentaDDL.SelectedValue = proveedorCuenta.continentTipoCuenta;
                ContinentaltipoDocDDL.SelectedValue = proveedorCuenta.continenttipoDoc.ToString();
                continentalNroDocTXT.Text = proveedorCuenta.continentNroDoc;


                nacionCuentaDetraccionTXT.Text = proveedorCuenta.nacionDetraccion;
                nacionCuentaInterbankTXT.Text = proveedorCuenta.nacionInterBan;

                scotiaCuentaInterBanTXT.Text = proveedorCuenta.scotiaInterBan;
                scotiaCuentaMNTXT.Text = proveedorCuenta.scotiaCuentaSOL;
                scotiaCuentaUSTXT.Text = proveedorCuenta.scotiaCuentaDOL;
                scotiaFormaPagoDDL.SelectedValue = proveedorCuenta.scotiaFormaPago.ToString();

                //DATOS CUENTAS

            }




        }
        private void swithtipoProveedor(string tipoProv)
        {
            if (tipoProv == "J")
            {
                juridicoPNL.Visible = true;
                NaturalPNL.Visible = false;
                //tipoUPNL.Update();
            }
            else
            {
                juridicoPNL.Visible = false;
                NaturalPNL.Visible = true;
                // tipoUPNL.Update();
            }
        }
        private void ShowAllComboBox()
        {




            var lista = new ListValueBL();

            clasificacionDDL.DataTextField = "descripcion";
            clasificacionDDL.DataValueField = "idInternalStr";
            clasificacionDDL.DataSource = lista.GetClasificacionProveedor();
            clasificacionDDL.DataBind();



            retencionDDL.DataTextField = "descripcion";
            retencionDDL.DataValueField = "idInternalStr";
            retencionDDL.DataSource = lista.GetRetencion();
            retencionDDL.DataBind();


            formaPagoGPDDL.DataTextField = "descripcion";
            formaPagoGPDDL.DataValueField = "idInternalStr";
            formaPagoGPDDL.DataSource = lista.GetFormaPagoGesPag();
            formaPagoGPDDL.DataBind();

            giroNegocioDDL.DataTextField = "descripcion";
            giroNegocioDDL.DataValueField = "idInternalStr";
            giroNegocioDDL.DataSource = lista.GetGiroNegocio();
            giroNegocioDDL.DataBind();


            tipoAcreedorDDL.DataTextField = "descripcion";
            tipoAcreedorDDL.DataValueField = "idInternalStr";
            tipoAcreedorDDL.DataSource = lista.GetTipoAcreedor();
            tipoAcreedorDDL.DataBind();


            areaContactoDDL.DataTextField = "descripcion";
            areaContactoDDL.DataValueField = "idInternalStr";
            areaContactoDDL.DataSource = lista.GetAreContactoPago();
            areaContactoDDL.DataBind();

            detraccionDDL.DataTextField = "descripcion";
            detraccionDDL.DataValueField = "idInternalStr";
            detraccionDDL.DataSource = lista.GetDetraccion();
            detraccionDDL.DataBind();


            InterbanktipoDocDDL.DataTextField = "descripcion";
            InterbanktipoDocDDL.DataValueField = "idInternalStr";
            InterbanktipoDocDDL.DataSource = lista.GetTipoDocInterbank();
            InterbanktipoDocDDL.DataBind();

            interbankTipoBonoDDL.DataTextField = "descripcion";
            interbankTipoBonoDDL.DataValueField = "idInternalStr";
            interbankTipoBonoDDL.DataSource = lista.GetTipoBonoBank();
            interbankTipoBonoDDL.DataBind();


            InterbanktipoProductoDDL.DataTextField = "descripcion";
            InterbanktipoProductoDDL.DataValueField = "idInternalStr";
            InterbanktipoProductoDDL.DataSource = lista.GetTipoProductoInterBank();
            InterbanktipoProductoDDL.DataBind();





            teleTipoDocDDL.DataTextField = "descripcion";
            teleTipoDocDDL.DataValueField = "idInternalStr";
            teleTipoDocDDL.DataSource = lista.GetTipoDocTelecredito();
            teleTipoDocDDL.DataBind();

            teleTipoProductoDDL.DataTextField = "descripcion";
            teleTipoProductoDDL.DataValueField = "idInternalStr";
            teleTipoProductoDDL.DataSource = lista.GetTipoProductoTelecredito();
            teleTipoProductoDDL.DataBind();


            ContinentaltipoDocDDL.DataTextField = "descripcion";
            ContinentaltipoDocDDL.DataValueField = "idInternalStr";
            ContinentaltipoDocDDL.DataSource = lista.GetTipoDocContinental();
            ContinentaltipoDocDDL.DataBind();

            ContinentalformaPagoDDL.DataTextField = "descripcion";
            ContinentalformaPagoDDL.DataValueField = "idInternalStr";
            ContinentalformaPagoDDL.DataSource = lista.GetFormaPagoContinental();
            ContinentalformaPagoDDL.DataBind();
        }
        private void FormatForm()
        {



            ShowAllComboBox();
            //restricionesForm();

            //--------------------
            int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                idEmpleadoEmisor,
                11, //Proveeedor
                1); //lectura
            //------------------------- 
            // los paneles presentes en el formulario
            pnlMain.Visible = true;
            PanelButtom.Visible = true;
            

            string Lang = "es-ES";  //para controlar el idioma 
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo
   (Lang);

            editObject();


        }


   
        protected void button(object sender, EventArgs e)
        {
            try
            {
                if ((sender as Button).ID == refreshButton.ID)
                {

                    FormatForm();
                }
                if ((sender as Button).ID == nuevoButton.ID)
                {

                    Response.Redirect("ProveedorEditForm.aspx?type=A", true);
                }
                if ((sender as Button).ID == EditarButton.ID)
                {

                    Response.Redirect("ProveedorEditForm.aspx?type=E&id=" + internalid.Value, true);
                }
                if ((sender as Button).ID == EliminarButton.ID)
                {

                    var proveedorBL = new BOL.ProveedorBL();
                    proveedorBL.delete(internalid.Value.ToInt());
                
                    Response.Redirect("ProveedorListForm.aspx", true);
                }
            }
           
            catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }
           

            
        }



        protected void anteriorButton_Click(object sender, EventArgs e)
        {
            try
            {
                dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
                
                int idAnterior = (from i in _db.Proveedors
                                  where  i.idInternal < int.Parse(internalid.Value)
                                  select i.idInternal
                       ).Max();


                if (idAnterior != 0)
                {
                    Response.Redirect("ProveedorReadForm.aspx?id=" + idAnterior, true);

                }
                else
                {

                    string script;
                    script = String.Format("<script languaje=\"javascript\">" +
                              "Alert(\"No existe mas  Registros\");" +
                              "</script>");



                    ClientScript.RegisterStartupScript(this.GetType(), "Proveedor", script);
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
           
        }

        protected void siguienteButton_Click(object sender, EventArgs e)
        {
            try
            {

                dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
                int  idSiguiente = (from i in _db.Proveedors
                                   where  i.idInternal > int.Parse(internalid.Value)
                                   select i.idInternal
                       ).Min();


                if (idSiguiente != 0)
                {
                    Response.Redirect("ProveedorReadForm.aspx?id=" + idSiguiente, true);

                }
                else
                {

                    string script;
                    script = String.Format("<script languaje=\"javascript\">" +
                              "Alert(\"No existe mas  Registros\");" +
                              "</script>");



                    ClientScript.RegisterStartupScript(this.GetType(), "Proveedor", script);
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
           
        }

        protected void interbankTipoBonoDDL_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        
        
    }
}